From 18affbd390abe4f31cb2480faf56bf6e6b3e37d8 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Fri, 20 Aug 2021 05:51:20 +0200 Subject: [PATCH] dragicon: Add a default drag icon for GskRenderNode Somebody should make this default drag icon machinery pluggable. --- gtk/gtkdragicon.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gtk/gtkdragicon.c b/gtk/gtkdragicon.c index b8b31671f9..a58cf474dc 100644 --- a/gtk/gtkdragicon.c +++ b/gtk/gtkdragicon.c @@ -31,7 +31,9 @@ /* for the drag icons */ #include "gtkcolorswatchprivate.h" +#include "gtkimage.h" #include "gtklabel.h" +#include "gtkrendernodepaintableprivate.h" #include "gtktextutil.h" @@ -555,6 +557,25 @@ gtk_drag_icon_create_widget_for_value (const GValue *value) return picture; } + else if (G_VALUE_HOLDS (value, GSK_TYPE_RENDER_NODE)) + { + GskRenderNode *node; + GdkPaintable *paintable; + graphene_rect_t bounds; + GtkWidget *image; + + node = gsk_value_get_render_node (value); + if (node == NULL) + return NULL; + + gsk_render_node_get_bounds (node, &bounds); + paintable = gtk_render_node_paintable_new (node, &bounds); + image = gtk_image_new_from_paintable (paintable); + gtk_image_set_icon_size (GTK_IMAGE (image), GTK_ICON_SIZE_LARGE); + g_object_unref (paintable); + + return image; + } else { return NULL; -- 2.30.2